// const fs = require('fs')


// function writeText(fileName){
//   console.log(fileName);
//   fs.writeFileSync(fileName, 'tile\n\r', { 'flag': 'w' });
//   for (let i = 0; i < 1000; i++) {
//     fs.writeFileSync(fileName, fileName +' test test' + i + '\n\r', { 'flag': 'a' });
//   }
// }

// // 异步执行文件写入，异步函数内各步骤同步运行
// async function asynWriteText(fileName){
  
//   fs.writeFileSync(fileName, 'tile\n\r', { 'flag': 'w' });
//   console.log(fileName);
//   for (let i = 0; i < 1000; i++) {
//     fs.writeFileSync(fileName, fileName +' test test' + i + '\n\r', { 'flag': 'a' });
//   }
// }

// // 异步执行文件写入，异步函数内各步骤异步运行(无法保证顺序写入)
// async function asynAsynWriteText(fileName){  
//   console.time('异步执行文件写入，异步函数内各步骤异步运行' + fileName);
//   fs.writeFile(fileName, 'tile\n\r', { 'flag': 'w' },()=>true);
//   for (let i = 0; i < 1000; i++) {
//     fs.writeFile(fileName, fileName +' test test' + i + '\n\r', { 'flag': 'a' },()=>{        
//       if(i >= 999){
//         console.timeEnd('异步执行文件写入，异步函数内各步骤异步运行' + fileName);
//       }
//     })
//   } 
// }

// // 注意：因为event-loop机制，跑完主线代码才会跑异步代码，所以【同步测试在先，异步测试在后】，才能准确知道异步运行时长

// // 同步测试在先
// console.time('同步执行文件写入');
// writeText('text1.txt');
// writeText('text2.txt');
// writeText('text3.txt');
// console.timeEnd('同步执行文件写入')

// // 异步测试在后
// console.time('异步执行文件写入，异步函数内各步骤同步运行');
// Promise.all(
//   [
//     asynWriteText('asyntext1.txt'),
//     asynWriteText('asyntext2.txt'),
//     asynWriteText('asyntext3.txt'),
//   ]
// )
// .then(()=>console.timeEnd('异步执行文件写入，异步函数内各步骤同步运行') );


// // 下面未使用Promise.all的原因是，由于三个异步任务中的子任务也是异步执行，无法在此处通过Promise.all获取准确时间
// asynAsynWriteText('asynasyntext1.txt');
// asynAsynWriteText('asynasyntext2.txt');
// asynAsynWriteText('asynasyntext3.txt');




require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
}).question('Press enter to exit...\r\n', function () {
  process.exit();
});
